package io.github.echarts.model;

import io.github.echarts.model.coordinate.CoordinateSystem;
import io.github.echarts.model.coordinate.DataRange;
import java.util.List;

/**
 * 系列模型接口，定义所有系列模型的通用行为
 */
public interface SeriesModel {
    /**
     * 获取系列类型
     * 
     * @return 系列类型
     */
    String getType();
    
    /**
     * 获取系列名称
     * 
     * @return 系列名称
     */
    String getName();
    
    /**
     * 获取关联的坐标系ID
     * 
     * @return 坐标系ID
     */
    String getCoordinateSystemId();
    
    /**
     * 处理原始数据，转换为内部模型数据
     */
    void processData();
    
    /**
     * 获取系列索引
     * 
     * @return 系列索引
     */
    int getSeriesIndex();
    
    /**
     * 设置系列索引
     * 
     * @param index 系列索引
     */
    void setSeriesIndex(int index);
    
    /**
     * 获取堆叠组名称
     * 
     * @return 堆叠组名称，如果不参与堆叠则返回null
     */
    String getStack();
    
    /**
     * 获取系列数据
     * 
     * @return 系列数据列表
     */
    List<Object> getData();
    
    /**
     * 设置坐标系
     * 
     * @param coordinateSystem 坐标系
     */
    void setCoordinateSystem(CoordinateSystem coordinateSystem);
    
    /**
     * 获取坐标系
     * 
     * @return 坐标系
     */
    CoordinateSystem getCoordinateSystem();
    
    /**
     * 获取Z轴层级
     * 
     * @return Z轴层级值
     */
    int getZLevel();
    
    /**
     * 获取数据范围
     * 
     * @return 数据范围对象
     */
    DataRange getDataRange();
    
    /**
     * 获取系列的数据范围值（最小值和最大值）
     * 
     * @return 包含两个元素的数组，第一个是最小值，第二个是最大值
     */
    double[] getDataRangeValues();
} 